/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package objetos;

import DataTypes.DataContenido;
import DataTypes.DataMuro;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Iterator;

/**
 *
 * @author Sebas
 */
public class Muro {

    private ArrayList<Contenido> contenidos;

    public Muro() {
        contenidos = new ArrayList<Contenido>();
    }

    public ArrayList<DataContenido> getContenidos() {

        DataContenido dc;
        ArrayList<DataContenido> lisdc = new ArrayList<DataContenido>();
        Iterator<Contenido> it = contenidos.iterator();

        while (it.hasNext()) {

            Contenido con = it.next();
            dc = new DataContenido(con.getTitulo(), con.getAutor(), con.getUrl(), con.getCuerpo(), 
                    con.getTipo(), con.getAprobacion(), con.isBloqueado(), con.getDataComentarios(), 
                    con.getFechaPublicacion(), con.isPublicar(), con.getDataEtiquetas());
            lisdc.add(dc);
        }

        return lisdc;
    }

    public void setContenidos(ArrayList<Contenido> contenidos) {
        this.contenidos = contenidos;
    }

    public void agregarContenido(Contenido cont) {

        contenidos.add(cont);

    }

    public ArrayList<Contenido> getContenidosObjeto() {
        return contenidos;
    }

    public void eliminarComentario(String tituloCont, String coment) {
        Iterator<Contenido> itera = contenidos.iterator();
        Contenido cont = null;
        while (itera.hasNext()) {
            cont = itera.next();
            if (cont.getTitulo().equals(tituloCont)) {
                cont.eliminarComentario(coment);
            }
        }
    }

    public void bloquearContenido(String titContenido) {
        Iterator<Contenido> itera = contenidos.iterator();
        Contenido cont = null;
        boolean seEncontro = false;
        while (itera.hasNext() && !seEncontro) {
            cont = itera.next();
            if (cont.getTitulo().equals(titContenido)) {
                cont.setBloqueado(true);
                seEncontro = true;
            }
        }
    }

    public DataMuro getDataMuro() {

        DataMuro mur = new DataMuro();
        mur.setContenidos(this.getContenidos());
        return mur;
    }

    void etiquetarImg(String titCont, Calendar fechaPub, ArrayList<String> correoEtiquetado) {
        boolean seEncontroImg = false;
        Iterator<Contenido> itera = contenidos.iterator();
        Contenido cont = null;
        SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
        String fech1 = formatter.format(fechaPub.getTime());
        while (itera.hasNext() && !seEncontroImg) {
            cont = itera.next();
            if (cont.getTitulo().equals(titCont)) {
                if (formatter.format(cont.getFechaPublicacion().getTime()).equals(fech1)){
                    seEncontroImg = true;
                    cont.etiquetarImg(correoEtiquetado);
                }
            }
        }
    }
    
    void quitarEtiquetaImg(String titCont, Calendar fechaPub, String correoEtiquetado) {
        boolean seEncontroImg = false;
        Iterator<Contenido> itera = contenidos.iterator();
        Contenido cont = null;
        while (itera.hasNext() && !seEncontroImg) {
            cont = itera.next();
            if (cont.getTitulo().equals(titCont)) {
                if (cont.getFechaPublicacion().getTime().toString().equals(fechaPub.getTime().toString())) {
                    seEncontroImg = true;
                    cont.quitarEtiquetaImg(correoEtiquetado);
                }
            }
        }
    }

    int getPromedioPuntaje() {
        
        int total = 0;
        int cantPublicaciones = contenidos.size();
        Iterator<Contenido> itera = contenidos.iterator();
        Contenido cont = null;
        
        while (itera.hasNext()){
            cont = itera.next();
            total += cont.getPuntaje();
        }
        if (cantPublicaciones==0){
            return 0;
        } else{
            return (total/cantPublicaciones);
        }
    }
}
